#include <stdio.h>
#define  M 3
#define  N 4
/* 函数功能：计算矩阵相乘之积，结果存于二维数组c中 */
void MultiplyMatrix(int a[M][N], int b[N][M], int c[M][M])
{ 	 	  	 
    int i, j, k;
    for (i = 0; i < M; i++)
    { 	 	  	 
        for (j = 0; j < M; j++)
        { 	 	  	 
            c[i][j] = 0;
            for (k = 0; k < N; k++)
            { 	 	  	 
                c[i][j] = c[i][j] + a[i][k] * b[k][j];
            }
        }
    }
} 	 	  	 
/* 函数功能：输出矩阵a中的元素 */
void  InputMatrixA(int a[M][N])
{ 	 	  	 
    int i, j;
    printf("Input %d*%d matrix a:\n", M, N);
    for (i = 0; i < M ; i++)
    { 	 	  	 
        for (j = 0; j < N; j++)
        { 	 	  	 
            printf("a[%d,%d]:", i, j);
            scanf("%d", &a[i][j]);
        }
    }
} 	 	  	 
void  InputMatrixB(int b[N][M])
{ 	 	  	 
    int i, j;
    printf("Input %d*%d matrix b:\n", N, M);
    for (i = 0; i < N ; i++)
    { 	 	  	 
        for (j = 0; j < M; j++)
        { 	 	  	 
            printf("b[%d,%d]:", i, j);
            scanf("%d", &b[i][j]);
        }
    }
} 	 	  	 

void  OutputMatrix(int a[M][M])
{ 	 	  	 
    int i , j ;
    printf("Results:\n");
    for (i = 0; i < M; i++)
    { 	 	  	 
        for (j = 0; j < M; j++)
        { 	 	  	 
            printf("%6d", a[i][j]);
        }
        printf("\n");
    }
} 	 	  	 
int main()
{ 	 	  	 
    int a[M][N], b[N][M], c[M][M];
    InputMatrixA(a);
    InputMatrixB(b);
    MultiplyMatrix(a, b, c);
    OutputMatrix(c);
    return 0;
} 	 	  	